home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / SPEZIAL / ADRES181 / CONVERT / CON_ADR2.C next >
Encoding:
C/C++ Source or Header  |  1993-11-30  |  8.7 KB  |  286 lines

  1. /****************************************************************************
  2.  
  3.  Konverter von Adressen des Programmes ADR_2_1.PRG zu 'Adresse'.
  4.  
  5.  Dieses Programm ist fix zusammengehackt worden, bitte keine Kritik am Quell-
  6.  text :-)!
  7.  
  8.  Aufruf: con_adr2 <Quelle> <Ziel>
  9.  
  10.  (C)1993 Carsten Setje-Eilers
  11.          Aschauweg 18a
  12.          24119 Kronshagen
  13.          Telefon 0431/544716
  14.          Fax 0431/547212
  15.          
  16.   Dieses Programm gehört zu 'Adresse' und darf nicht einzeln weitergegeben
  17.   werden.       
  18.  
  19.   ( Tabulator: 2 )
  20.  
  21.  ****************************************************************************/
  22.  
  23. #include <string.h>
  24. #include <stdlib.h>
  25. #include <stdio.h>
  26. #include <tos.h>
  27.  
  28. /****************************************************************************
  29.  
  30.   Adress-Node von 'Adresse'                                                              
  31.  
  32.  ****************************************************************************/
  33. typedef struct _adrnode
  34.   char     vorname[33];                             /* Vorname              */
  35.   char     name[33];                                /* Name                 */
  36.   char     name1[33];                               /* z.Hd. o.ae.          */
  37.   char     name2[33];                               /* z.Hd. o.ae.          */
  38.   char     strasse[33];                             /* Strasse              */     
  39.   char     land[7];                                 /* Länderkennung        */
  40.   char     plz[13];                                 /* Postleitzahl         */
  41.   char     stadt[33];                               /* Stadt                */
  42.   char     telefon[33];                             /* Telefon              */
  43.   char     telefon1[33];                            /* Telefon              */
  44.   char     fax[33];                                 /* Fax                  */
  45.   char     fax1[33];                                /* Fax                  */
  46.   char     kundennr[15];                            /* Kundennummer         */ 
  47.   char     typ[22];                                 /* Lieferant/Kunde      */
  48.   char     anrede[33];                              /* Anrede (Sehr geehr..)*/
  49.   char     anrede1[33];                             /* Anrede (Sehr geehr..)*/
  50.   char     zahlart[33];                             /* %NULL                */
  51.   char     umsatz[16];                              /* Umsatz mit Kunde     */
  52.   char     rabatt[4];                               /* Kunden-Extra-Rabatt  */
  53.   char     zahlziel[4];                             /* Zahlungsziel in Tage */
  54.   char     bemerkung1[66];                          /* Blah                 */
  55.   char     bemerkung2[66];                          /* Blah                 */
  56.   char     bemerkung3[66];                          /* Blah                 */
  57.   char     geburt[12];                              /* Geburtstag           */
  58.   char     bank[28];                                /* Bankname             */ 
  59.   char     konto[11];                               /* Kontonummer          */
  60.   char     blz[9];                                  /* Bankleitzahl         */
  61.   char     status[22];                              /* Bezahlt/Unbezahlt/.. */
  62.   char     erstellt[12];                            /* Erstellungsdatum     */
  63.   char     geaendert[12];                           /* Letzte Änderung      */
  64.   int      selected;                                /* ist selektiert       */
  65.   long     nr;                                      /* Interne Nummer       */ 
  66.   struct   _adrnode *next;
  67. }ADRNODE;
  68.  
  69. int  write_adr( FILE *stream, ADRNODE *a );
  70. void kill_blanks( char *s, int l );
  71.  
  72. /****************************************************************************
  73.  
  74.  Hauptprogramm
  75.  
  76.  ****************************************************************************/
  77. int main( int argc, char *argv[] )
  78. {
  79.   Cconws("\r\nKonverter ADR_2 -> Adresse\r\n");
  80.   Cconws("\r\nVersion 1.0, (");
  81.   Cconws( __DATE__);
  82.   Cconws(")\r\n");
  83.   Cconws("\r\nDieser Konverter wandelt die Daten von ADR_2_1.PRG in");
  84.   Cconws("\r\ndas Format von Adresse. Es findet keine Prüfung des");
  85.   Cconws("\r\nFormates statt!");
  86.   Cconws("\r\n");
  87.  
  88.   Cconws("\r\n(C)1993 Carsten Setje-Eilers");
  89.   Cconws("\r\n        Aschauweg 18a");
  90.   Cconws("\r\n        24119 Kronshagen");
  91.  
  92.   if( argc < 3 )
  93.   {
  94.     Cconws("\r\n");
  95.     Cconws("\r\nAufruf: CON_ADR2  <quelle> <ziel>");
  96.     Cconws("\r\n");
  97.   }
  98.   else
  99.   {
  100.     int     error = 0;
  101.     long    count = 0;
  102.     FILE    *fh, *dest;
  103.     ADRNODE b, *a = &b;
  104.  
  105.     Cconws("\r\nÖffne Datei:\r\n");
  106.     Cconws( argv[1] );
  107.     fh   = fopen(argv[1], "rb" );
  108.     if( !fh )
  109.       Cconws("\r\nFehler beim Öffnen.");
  110.       
  111.       
  112.     Cconws("\r\nÖffne Datei:\r\n");
  113.     Cconws( argv[2] );
  114.     dest = fopen(argv[2], "w" );
  115.     if( !dest )
  116.       Cconws("\r\nFehler beim Öffnen.");
  117.  
  118.     if( fh && dest )
  119.     {
  120.       if( EOF == fputs( "Adressliste 1.05\n", dest ))
  121.         error = 1;
  122.       else
  123.       {
  124.         char *s, *buf = malloc (260);
  125.         
  126.         while( 1 == fread( buf, 260, 1, fh ) )
  127.         {
  128.           memset( a, 0, sizeof(ADRNODE) );
  129.           
  130.           s = buf;
  131.           memcpy( a->zahlart, s, 2 ); 
  132.           kill_blanks( a->zahlart, 2 );
  133.           s += 2;
  134.  
  135.           memcpy( a->vorname, s, 30 ); 
  136.           kill_blanks( a->vorname, 30 );
  137.           s += 30;
  138.  
  139.           memcpy( a->name, s, 30 ); 
  140.           kill_blanks( a->name, 30 );
  141.           s += 30;
  142.  
  143.           memcpy( a->strasse, s, 30 ); 
  144.           kill_blanks( a->strasse, 30 );
  145.           s += 30;
  146.  
  147.           memcpy( a->plz, s, 6 ); 
  148.           kill_blanks( a->plz, 6 );
  149.           s += 6;
  150.  
  151.           memcpy( a->stadt, s, 30 ); 
  152.           kill_blanks( a->stadt, 30 );
  153.           s += 30;
  154.  
  155.           memcpy( a->land, s, 3 ); 
  156.           kill_blanks( a->land, 3 );
  157.           s += 3;
  158.  
  159.           s++;            
  160.  
  161.           memcpy( a->anrede, s, 10 ); 
  162.           kill_blanks( a->anrede, 10 );
  163.           s += 10;
  164.  
  165.           memcpy( a->telefon, s, 20 ); 
  166.           kill_blanks( a->telefon, 20 );
  167.           s += 20;
  168.  
  169.           memcpy( a->geburt, s, 8 ); 
  170.           kill_blanks( a->geburt, 8 );
  171.           s += 8;
  172.  
  173.           memcpy( a->bemerkung1, s, 40 ); 
  174.           kill_blanks( a->bemerkung1, 40 );
  175.           s += 40;
  176.  
  177.           memcpy( a->bemerkung2, s, 40 ); 
  178.           kill_blanks( a->bemerkung2, 40 );
  179.           s += 40;
  180.           s++;
  181.           
  182.           memcpy( a->bemerkung3, s, 1 ); 
  183.           s++;
  184.  
  185.           memcpy( a->kundennr, s, 8 ); 
  186.           kill_blanks( a->kundennr, 8 );
  187.           s += 8;
  188.           
  189.           if( count )
  190.           {
  191.             /*
  192.             printf("\n%s\n%s %s\n%s\n%s %s %s\nTel.%s\n%s\n%s\n%s\n%s\n%s\n", 
  193.             a->anrede, a->vorname, a->name, a->strasse, a->land, a->plz, 
  194.             a->stadt, a->telefon, a->bemerkung1, a->bemerkung2, a->bemerkung3, 
  195.             a->kundennr, a->geburt );
  196.             */
  197.             
  198.            if( a->name[0] || a->vorname[0] || a->kundennr[0] || a->name1[0] || a->name2[0] )
  199.              if( EOF == write_adr( dest, a ) ){
  200.                error = 1;
  201.                break;
  202.              }
  203.           }
  204.           count++;
  205.         }
  206.         free(buf);
  207.       }
  208.   
  209.       Cconws("\r\nSchließe Dateien");
  210.       fclose( fh );
  211.       
  212.       if( !error )
  213.         fclose( dest );
  214.       else
  215.         Cconws("\r\nFehler beim Sichern!");
  216.     }
  217.   }
  218.  
  219.   Cconws("\r\n-- Taste --");
  220.   Cconin();
  221.  
  222.   return 0;
  223. }
  224. /****************************************************************************
  225.  
  226.  Einen ADRNODE nach stream schreiben.
  227.  
  228.  ****************************************************************************/
  229. int write_adr(FILE *stream,ADRNODE *a)
  230. {
  231.   return fprintf(stream,
  232.         "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%ld|\n",
  233.         a->vorname,
  234.         a->name,
  235.         a->name1,
  236.         a->name2,
  237.         a->strasse,
  238.         a->land,
  239.         a->plz,
  240.         a->stadt,
  241.         a->telefon,
  242.         a->fax,
  243.         a->kundennr,
  244.         a->typ,
  245.         a->anrede,
  246.         a->zahlart,
  247.         a->bemerkung1,
  248.         a->bemerkung2,
  249.         a->umsatz,
  250.         a->rabatt,
  251.         a->zahlziel,
  252.         a->bemerkung3,
  253.         a->anrede1,
  254.         a->bank,
  255.         a->blz,
  256.         a->konto,
  257.         a->geburt,
  258.         a->fax1,
  259.         a->telefon1,
  260.         a->status,
  261.         a->erstellt,
  262.         a->geaendert,
  263.         a->nr
  264.         );
  265. }
  266. /****************************************************************************
  267.  
  268.  Leerzeichen hinten abschneiden
  269.  
  270.  ****************************************************************************/
  271. void kill_blanks( char *s, int l )
  272. {
  273.   l -= 1;
  274.   
  275.   while( l >= 0 )
  276.   {
  277.     if( s[l] == ' ' )
  278.       s[l] = 0;
  279.     else
  280.       break;
  281.     
  282.     l--;
  283.   }
  284. }
  285.